package view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

import controller.SistemaTelefonia;

public class AltaLineaAdicional extends javax.swing.JFrame {

	private static final long serialVersionUID = 1L;

	private String usuarioDni;
	private String[] labels = { "Usuario Dni", "Nombre", "Apellido",
			"Domicilio", "Telefono", "Numero Asignado" };
	private JTextField nombreAdicional = new JTextField();
	private JTextField[] textFields = { nombreAdicional };

	private JButton alta;
	private SistemaTelefonia sistema;
	private NumeroView numeroLibreView;
	private int adicionalPlanId;

	public AltaLineaAdicional() {
	}

	public AltaLineaAdicional(SistemaTelefonia s, String usuarioDni) {
		super();

		sistema = s;
		this.usuarioDni = usuarioDni;
		numeroLibreView = sistema.getPrimerNumeroLibre();

		initGUI();
	}

	private void initGUI() {
		try {
			adicionalPlanId = getPlanAdicionalId();
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			generateInputs();

			alta = new JButton();
			getContentPane().add(alta);
			alta.setText("Crear Nueva Linea");
			alta.setBounds(10, 400, 200, 28);

			alta.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					try {
						
						sistema.crearLinea(usuarioDni,
								numeroLibreView.getNumeroId(), adicionalPlanId,
								nombreAdicional.getText());

						JOptionPane.showMessageDialog(getContentPane(),
								"La linea Adicional ha sido creada con exito");
						
						sistema.reloadData();
						
						setVisible(false);

					} catch (Exception e) {
						JOptionPane.showMessageDialog(getContentPane(),
								e.getMessage());

					}
				}
			});

			pack();
			setTitle("Alta de linea Adicional");
			setSize(450, 500);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private int getPlanAdicionalId() {
		for (PlanView p : sistema.getPlanesView()) {
			if (p.getNombre().equals("Adicional"))
				return p.getPlanId();
		}

		return 0;
	}

	private UsuarioView getUsuarioView(String dni) {
		return this.sistema.getUsuario(dni);
	}

	private void generateInputs() {
		int y = 42;

		generateLabel("Nombre de la Linea Adicional", 21, y);

		for (JTextField textField : textFields) {
			generateInput(textField, 200, y);
			y += 50;
		}

		UsuarioView usuario = getUsuarioView(usuarioDni);
		String[] values = {
				usuario.getDni(),
				usuario.getNombre(),
				usuario.getApellido(),
				usuario.getDomicilio(),
				usuario.getTelefono(),
				"(" + String.valueOf(numeroLibreView.getCodPais()) + ")"
						+ String.valueOf(numeroLibreView.getCodArea()) + "-"
						+ String.valueOf(numeroLibreView.getNumero()) };

		for (int i = 0; i < labels.length; i++) {
			generateLabel(labels[i] + ": " + values[i], 21, y);
			y += 50;
		}

	}

	private void generateInput(JTextField textField, int x, int y) {
		getContentPane().add(textField);
		textField.setBounds(x, y, 210, 28);
	}

	private void generateLabel(String label, int x, int y) {
		{
			JLabel jLabel = new JLabel();
			jLabel.setText(label);
			jLabel.setBounds(x, y, 300, 28);
			getContentPane().add(jLabel);
		}

	}
}